package 传智播客_黑马.java基础.集合总览.Map;
import java.util.HashMap;
import java.util.Map;

/*
    java.util.Map<K,V>集合
    Map集合特点
        1,是一个双列集合,一个元素包含两个值(一个Key,和一个value)
        2,Map集合中的元素,key和value的数据类型可以相同,也可以不同
        3,Map集合中的元素,key是不允许重复的,value是可以重复的
        4,Map集合中的元素,key和value是一一对应的
     java.util.HashMap<k,v>集合 implements Map<k,v>集合
     HashMap的特点
        1,HashMap集合底层是哈希表,查询的速度特别快
            JDK1.8之前:数组加+单项链表
            JDK之后:数组加单项链表/红黑树(链表的长度超过8):提高查询的速度
        2,HashMap是一个无序的集合,存储元素和取出元素的顺序可能不一致
     java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
     LikedHashMap 的特点:
        1,LinkedHashMap集合的底层是哈希表加链表
        2,LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的
 */
/*
    Map集合的常用函数
        put函数返回被替换的值
        remove函数返回被删掉的值
        get函数返回想要获取的值
        containsKey函数返回是否包含某个键值
        

 */
public class MapBasic {
    public static void main(String[] args) {
        show04();
    }
    /*
    boolean containsKey(object key)判断集合中是否包含指定的键
        返回值
            是:True
            否:false
     */
    private static void show04() {
        Map<String,Integer> map = new HashMap<>();
        map.put("赵丽颖",168);
        map.put("杨颖",165);
        map.put("林志玲",178);
        System.out.println(map);//{林志玲=178, 赵丽颖=168, 杨萍=165}

        boolean v2 = map.containsKey("杨颖");
        System.out.println(v2);

    }

    /*
    public V get(Object key): 根据指定的键,在Map集合中获取对应的值.
        返回值:
            key存在返回对应的value值
            否则返回null
     */
    private static void show03() {
        Map<String,Integer> map = new HashMap<>();
        map.put("赵丽颖",168);
        map.put("杨颖",165);
        map.put("林志玲",178);
        System.out.println(map);//{林志玲=178, 赵丽颖=168, 杨萍=165}

        Integer v1 = map.get("杨颖");
        System.out.println("v1 "+ v1);

    }

    /*
    public V remove(Object key):把指定的键 所对的键值元素 在Map集合中删除 ,返回被删除的值
        返回值 : V
            key存在 v返回被删除的值
            key不存在 返回null
     */
    private static void show02() {
        Map<String,Integer> map = new HashMap<>();
        map.put("赵丽颖",168);
        map.put("杨萍",165);
        map.put("林志玲",178);
        System.out.println(map);//{林志玲=178, 赵丽颖=168, 杨萍=165}

        Integer v1 = map.remove("林志玲");
        System.out.println("V1 "+ v1);
    }

    /*
    public V put(K key,V value):把指定的值添加到Map集合中
        返回值 : v
            存储键值对的时候,key不重复,返回值是null
            存储键值对的时候,key重复,会使用新的value替换map中重复的value,返回被替换的value
     */
    private static void show01() {
        //创建Map集合
        Map<String,String> map = new HashMap<>();

        String v1 = map.put("李晨", "范冰冰");
        System.out.println("v1 " + v1);
        String v2 = map.put("李晨", "范冰冰2");
        System.out.println("v2 " + v2);

        System.out.println(map);

        map.put("冷锋","龙小云");
        map.put("杨过","小龙女");
        map.put("伊志平","小龙女");
    }
}
